/***************************************************************************
[FileName]
-------------------
    begin                : [FileDate]
    copyright            : by kuzkok
    email                : kuzkok@gmail.com

***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*   
*   Данная программа является свободным программным обеспечением;         *
*   Вы можете распространять ее и/или модифицировать в соответствии с     *
*   GNU General Public License опубликованной Фондом свободного           *
*   программного обеспечения; используемая версия лицензии - 2 или        *
*   (по вашему выбору) любая более поздняя                                *
***************************************************************************/
#include <QMessageBox>
#include <QTextEdit>

#include "pipenodes.h"

RootNode::RootNode(const QString theDataTable, const QString nameHeader):
        TreeNode("","")
{
    if(dbconnection::instance()->connected())
    {
        QString sql="select childll.* from "+theDataTable+" childll where not exists (select * from "+theDataTable+"hierarchy llh where llh.child"+theDataTable+"eventid=childll.eventid)";
        //QMessageBox::information(0, "info", "request: "+sql);
        QSqlQuery query(dbconnection::instance()->database());
        query.prepare(sql);
        if(query.exec())
        {
            int nameIndex = query.record().indexOf(nameHeader);
            int oidIndex = query.record().indexOf("eventid");
            while(query.next())
            {
                ChildNode *cn = new ChildNode(query.value(oidIndex).toString(), query.value(nameIndex).toString(), theDataTable, nameHeader, this);
                appendChild(cn);
            }
        }
        else
            QMessageBox::information(0,"error", query.lastError().text(), QMessageBox::Ok);

    }
}


ChildNode::ChildNode(const QString theOid, const QString theLabel, const QString theDataTable, const QString nameHeader, TreeNode *parent):
        TreeNode(theOid, theLabel, parent)
{
    if(dbconnection::instance()->connected())
    {
        QString sql="select childll.* from "+theDataTable+" childll ";
        sql += "inner join "+theDataTable+"hierarchy llh ";
        sql += "on llh.child"+theDataTable+"eventid=childll.eventid ";
        sql += "where llh.parent"+theDataTable+"eventid='"+theOid+"'";
        QSqlQuery query(dbconnection::instance()->database());
        query.prepare(sql);

        if(query.exec())
        {
            int nameIndex = query.record().indexOf(nameHeader);
            int oidIndex = query.record().indexOf("eventid");
            while(query.next())                
            {
                ChildNode *cn = new ChildNode(query.value(oidIndex).toString(), query.value(nameIndex).toString(), theDataTable, nameHeader, this);
                appendChild(cn);
            }
        }
        else
            QMessageBox::information(0,"error", query.lastError().text(), QMessageBox::Ok);
    }
}
